// 自定义指令 根据登录后获取的权限来删除单个按钮

import store from '@/store'

const permission = {
    inserted(el, binding) {
        // 获取指令的值：按钮要求的角色数组
        // binding: {value: ['admin','editor']}
        const { value: pRoles } = binding
        // 获取用户角色
        const roles = store.getters && store.getters.roles
        // 合法性校验
        if (pRoles && pRoles instanceof Array && pRoles.length > 0) {
            // 判断用户角色中是否有按钮要求的角色
            const hasPermission = roles.some(role => {
                return pRoles.includes(role)
            })

            // 如果没有权限则删除当前dom
            if (!hasPermission) {
                el.parentNode && el.parentNode.removeChild(el)
            }
        } else {
            throw new Error(`需要指定按钮要求角色数组，如v-permission="['admin','editor']"`)
        }
    }
}

export default permission
